package com.dronff.gvm.interfaces;

import com.dronff.gvm.memorymanager.Memory;

/**
 * @author: tyf
 * @date: 2022/9/9 17:06
 * @description: todo(可读并且可写
 */
public interface Readable {

    /**
     * 读取当前内存的数据
     * @param function 会向这个函数中传入一个byte数组 这个byte数组是一个副本 所以是只读的
     * @param <T> 返回的数据类型
     * @return
     */
    <T> T readOnly(ReadFunction<T> function);
    /**
     * 读取子内存的数据
     * @param function 会向这个函数中传入一个byte数组 这个byte数组是一个副本 所以是只读的
     * @param <T> 返回的数据类型
     * @return
     */
    <T> T readOnlyChild(ReadFunction<T> function, Memory memory);
}
